@echo off
chcp 65001 >nul
REM 快速 SonarQube 扫描脚本
REM 使用方法：将下面的 YOUR_TOKEN_HERE 替换为你的真实 Token，然后双击运行

echo ========================================
echo   SonarQube 快速扫描
echo   学生请假管理系统
echo ========================================
echo.

REM ⚠️ 请在这里替换为你的 Token
set SONAR_TOKEN=YOUR_TOKEN_HERE

REM 检查是否已替换 Token
if "%SONAR_TOKEN%"=="YOUR_TOKEN_HERE" (
    echo [错误] 请先编辑此文件，将 YOUR_TOKEN_HERE 替换为你的真实 Token
    echo.
    echo 获取 Token 的步骤：
    echo   1. 访问 http://localhost:9000
    echo   2. 登录并创建项目
    echo   3. 生成 Token 并复制
    echo   4. 右键编辑此脚本文件，替换 YOUR_TOKEN_HERE
    echo.
    pause
    exit /b 1
)

echo [✓] Token 已设置
echo.

REM 检查 SonarQube 服务
echo [1/4] 检查 SonarQube 服务...
curl -s http://localhost:9000/api/system/status > nul 2>&1
if %errorlevel% neq 0 (
    echo [X] 无法连接到 SonarQube
    echo.
    echo 请确保 SonarQube 已启动：
    echo   cd D:\sonarqube-25.10.0.114319\bin\windows-x86-64
    echo   .\StartSonar.bat
    echo.
    pause
    exit /b 1
)
echo [✓] SonarQube 运行中
echo.

REM 清理缓存
echo [2/4] 清理旧缓存...
if exist .scannerwork rmdir /s /q .scannerwork
echo [✓] 清理完成
echo.

REM 生成测试覆盖率
echo [3/4] 生成测试覆盖率...
cd server
call npm run test:coverage
cd ..
echo [✓] 测试完成
echo.

REM 运行扫描
echo [4/4] 运行扫描...
echo.

REM 检查是否安装了 sonar-scanner
where sonar-scanner >nul 2>nul
if %errorlevel% neq 0 (
    echo 使用 npx 运行扫描...
    npx sonarqube-scanner -Dsonar.host.url=http://localhost:9000 -Dsonar.token=%SONAR_TOKEN%
) else (
    sonar-scanner -Dsonar.host.url=http://localhost:9000 -Dsonar.token=%SONAR_TOKEN%
)

if %errorlevel% equ 0 (
    echo.
    echo ========================================
    echo   ✓ 扫描完成！
    echo ========================================
    echo.
    echo 查看报告：
    echo http://localhost:9000/dashboard?id=student-leave-management-system
    echo.
    echo 按任意键打开报告...
    pause >nul
    start http://localhost:9000/dashboard?id=student-leave-management-system
) else (
    echo.
    echo [X] 扫描失败，请检查上面的错误信息
    echo.
    pause
    exit /b 1
)

